package com.example.product.presentationViews;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;

import com.blankj.utilcode.util.FileUtils;
import com.blankj.utilcode.util.GsonUtils;
import com.example.presentation_libary.presentationViews.BasePresentionView;
import com.example.product.Constants;
import com.example.product.Data;
import com.example.productmodule.R;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoader;

import java.io.File;
import java.io.FileFilter;
import java.util.List;

/**
 * 我是商品广告的
 */
public class DislayBannerView extends BasePresentionView {
    public static final String Tag = "商品广告页";


    public DislayBannerView(@NonNull Context context, String mjson) {
        super(context, mjson);
    }

    @Override
    public int getLayoutId() {
        return R.layout.view_auxiliary_banner;
    }


    public void initEvent() {
        Log.i(Tag, json);
        Data data = GsonUtils.fromJson(json, Data.class);
        TextView advTv = rootView.findViewById(R.id.tv_adv_content);
        advTv.setText("商品货道-" + data.getName());
        ImageView img_product_adv = rootView.findViewById(R.id.img_product_adv);

        Banner banner = rootView.findViewById(R.id.adv_image_banner);

        if (FileUtils.isDir(Constants.DIR_AUXILIARY)) {
            List<File> files = getFiles(data.getName() + "-");
            if (files.size() > 0) {
                img_product_adv.setVisibility(GONE);
                setImageBanner(banner, files);
//                Bitmap bitmap = BitmapFactory.decodeFile(files.get(0).getAbsolutePath());
//                img_product_adv.setImageBitmap(bitmap);
            } else {
                banner.setVisibility(View.GONE);
                img_product_adv.setImageResource(R.mipmap.ic_launcher_round);
            }
        } else {
            Log.i(Tag, "文件路径= 不存在");
        }
        banner.setOnBannerListener(new OnBannerListener() {
            @Override
            public void OnBannerClick(int position) {
                Log.i(Tag, "OnBannerClick= " + position);
            }
        });
    }

    /**
     * 查询文件夹下的所有文件 及进行条件过滤
     *
     * @param str_fixe
     * @return
     */
    public List<File> getFiles(final String str_fixe) {
        List<File> files = FileUtils.listFilesInDirWithFilter(Constants.DIR_AUXILIARY, new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                boolean contains = pathname.getName().startsWith(str_fixe) && isImg(pathname.getName());
                return contains;
            }
        });
        Log.i(Tag, "文件数量=" + files.size() + "");
        return files;
    }

    /**
     * 判断后缀名是否是图片格式
     *
     * @param pathname
     * @return
     */
    public boolean isImg(String pathname) {
        if (pathname.endsWith(".jpg") || pathname.endsWith(".png") || pathname.endsWith(".webp")) {
            return true;
        }
        return false;
    }


    public void setImageBanner(Banner banner, List<File> imgs) {
        // 设置banner样式 不显示指示器和标题
        banner.setBannerStyle(BannerConfig.NOT_INDICATOR);
        // 设置图片加载器
        banner.setImageLoader(new MyImageLoader());
        // 设置图片集合
        banner.setImages(imgs);
        // 设置banner动画效果
        banner.setBannerAnimation(Transformer.Default);
        // 设置自动轮播，默认为true
        banner.isAutoPlay(true);
        // 设置轮播时间
        int delayTime = 5000;
        banner.setDelayTime(delayTime);
        // banner设置方法全部调用完毕时最后调用
        banner.start();

    }

    public class MyImageLoader extends ImageLoader {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            imageView.setScaleType(ImageView.ScaleType.FIT_XY); // XY轴拉伸铺满
            // imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); // 中心缩放等比例加载
            Bitmap bitmap = BitmapFactory.decodeFile(((File) path).getAbsolutePath());
            imageView.setImageBitmap(bitmap);
        }
    }
}
